/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufrn.cerescaico.sepe.bo;

import br.ufrn.cerescaico.sepe.Sepe;
import br.ufrn.cerescaico.sepe.beans.Categoria;
import br.ufrn.cerescaico.sepe.dao.util.DataAccessLayerException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

/**
 * Classe de negócio do bean Categoria do sistema SEPE.
 * @author Taciano Morais Silva
 * @version 12/08/2010, 21h00m
 * @since 12/08/2010, 21h00m
 */
public class CategoriaBO extends AbstractBO {

    /**
     * Logger.
     */
    private Logger logger = Logger.getLogger(CategoriaBO.class);

    /**
     * Construtor que recebe como parâmetro a fachada {@link Sepe}.
     * @param sepe A fachada {@link Sepe}.
     */
    public CategoriaBO(Sepe sepe) {
        super(sepe);
    }

    /**
     * Lista todas as categorias de trabalhos.
     * @return A lista de categorias de trabalhos.
     */
    public List<Categoria> listarCategoriasTrabalhos() throws SepeException {
        logger.info("listarCategoriasTrabalhos");
        ArrayList<Categoria> categorias = new ArrayList<Categoria>();
        categorias.add(Categoria.COMUNICACAO_ORAL);
        categorias.add(Categoria.POSTER);
        categorias.add(Categoria.RELATO_MONITORIA);
        return categorias;
    }

    /**
     * Lista todas as categorias de atividades.
     * @return A lista de categorias de atividades.
     */
    public List<Categoria> listarCategoriasAtividades() throws SepeException {
        logger.info("listarCategoriasAtividades");
        ArrayList<Categoria> categorias = new ArrayList<Categoria>();
        categorias.add(Categoria.MINI_CURSO);
        categorias.add(Categoria.OFICINA);
        categorias.add(Categoria.MESA_TEMATICA);
        return categorias;
    }

    public Categoria getCategoria(String nome) throws SepeException {
        if (nome.equals(Categoria.COMUNICACAO_ORAL.getNome())) {
            return Categoria.COMUNICACAO_ORAL;
        } else if (nome.equals(Categoria.POSTER.getNome())) {
            return Categoria.POSTER;
        } else if (nome.equals(Categoria.RELATO_MONITORIA.getNome())) {
            return Categoria.RELATO_MONITORIA;
        } else if (nome.equals(Categoria.MINI_CURSO.getNome())) {
            return Categoria.MINI_CURSO;
        } else if (nome.equals(Categoria.OFICINA.getNome())) {
            return Categoria.OFICINA;
        } else if (nome.equals(Categoria.MESA_TEMATICA.getNome())) {
            return Categoria.MESA_TEMATICA;
        }
        throw new SepeException("erro.bo.categoria.naocadastrada");
    }
}
